#include <cstdio>
#include <algorithm>
using namespace std;
//long long 64位
int fun(long long n){
	int count=0;
	while(n!=0){
		count++;
		//这是将n的最低一位1改为0
		//补充一点 n&(n-1)还可以用来判断n是否是2的幂
		//因为2的幂的二进制都是一个1其他位为0,减1之后的二进制数
		//与原数完全错开，所以&的值为0
		n&(n-1);
	}
	return count;
}
int main(void){
	//正负数都可以，负数以补码形式存在
	printf("15:%d\n-15:%d\n",fun(15),fun(-15));
	return 0;
}
